﻿#ifndef PST_IPLCalculationUIComponents_H
#define PST_IPLCalculationUIComponents_H

#include <QWidget>
#include <QHBoxLayout>
#include <QLabel.h>
#include <QModelIndexList>
#include <QStringListModel>
QT_BEGIN_NAMESPACE
namespace Ui
{
    class IPLCalculationUIComponents;
};
QT_END_NAMESPACE

namespace pst
{
    class DataChosenListDialog;
    class IPLCalculationUIComponents : public QWidget
    {
        Q_OBJECT
    public:
        IPLCalculationUIComponents(QWidget* parent = nullptr);
        ~IPLCalculationUIComponents();

        /// @brief 设置UI组件名称
        /// @param namePartChinese 中文部分
        /// @param namePartUppercase 英文大写部分
        /// @param namePartLowercase 英文右下角标部分
        /// @param namePartUnit 单位部分
        void setUIComponentsName(const QString& namePartChinese, const QString& namePartUppercase, const QString& namePartLowercase, const QString& namePartUnit);
        void setCurveNameList(const QList<QString>& curveNameList);
        void setInit(const QString& param);
        /// @brief 值和曲线只能二选一，当选中值输入方式时，曲线输入框不可用，反之亦然
        /// @return 获取值输入方式是否选中
        bool getRadioButtonValueState();
        /// @brief 获取当前的值，-1表示空值
        /// @return 当前的值
        double getIPLValue();
        QList<int> getIPLSeletedCurveIndexs();
        QString getUIComponentsNameAbbreviationLetter();

    public slots:
        void on_radioButton_value_toggled(bool checked);
        void on_pushButton_Curve_clicked();
        void slot_sentChosenDataIds(const QModelIndexList& chosenID);

    private:

        QModelIndexList createSelectedIndexes(const QStringList& params);

    private:
        Ui::IPLCalculationUIComponents* ui;
        QString m_nameAbbreviationLetter;
        QList<QString> m_curveNameList;
        DataChosenListDialog* m_dataChosenListDialog;
        QList<int> m_selectedIndexs;

        QStringListModel m_model;
        bool m_edit;
    };
} // namespace pst
#endif
